In a network environment, devices, such as a client and server, may communicate via a transport layer connection. In a TCP/IP network, a client and server may establish a transport control protocol (TCP) connection and communicate by transmitting TCP packets. With TCP, the client and server may exchange transport control protocol information by optional information in headers of TCP packets referred to as TCP header options. For example, a client and server may negotiate the internet protocol segment size by using the maximum segment size option field in a TCP synchronization packet known as a TCP SYN packet. In another example, the client and server may use a TCP packet selective acknowledgement mechanism implemented with TCP header options to communicate which packets have been received. In other examples, devices may use TCP header options to exchange proprietary control information.
One problem with using TCP header options is that is only works for TCP packets and not other IP protocols. In an IP network, other protocols may be used to communicate between devices and therefore do not support the use of TCP header options. Another problem is the limited space available in the TCP header option. In some cases, it may be necessary to remove a desired TCP option in the header to make space available for inserting another TCP option. Additionally, by adding options to the TCP header, the length of the TCP packet increases. This may result in packet fragmentation and other length-related issues. Yet another issue with TCP header options is related to traversing firewalls or other network devices. For example, some firewall devices may reject unknown options or reject options the firewall considers to be unacceptable, malicious, or unfamiliar. Also, the TCP header options a firewall may accept or reject can be arbitrary and subject to change. This can further challenge the use of TCP options in a network environment.
Thus, it is desirable to provide systems and methods to communicate information between devices in a manner more compatible with and transparent to various network devices and protocols.